home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 076-100 / disk_094 / modulatools / examples / simpletest.mod < prev   
Text File  |  1992-05-06  |  4KB  |  120 lines

  1. MODULE Test;
  2.  
  3. FROM InOut       IMPORT Read, Write, WriteInt, WriteString, WriteLn;
  4. FROM Intuition   IMPORT ScreenPtr, WindowPtr, ItemFlags, ItemFlagSet, Menu,
  5.                         MenuPtr, MenuItem, MenuItemPtr, IntuiMessagePtr,
  6.                         IDCMPFlags, IDCMPFlagSet, MenuFlags, MenuFlagSet,
  7.                         MenuNULL;
  8. FROM Menus       IMPORT SetMenuStrip, HighComp;
  9. FROM Screens     IMPORT CloseScreen;
  10. FROM Storage     IMPORT DestroyHeap;
  11. FROM Strings     IMPORT String;
  12. FROM SYSTEM      IMPORT NULL;
  13. FROM Views       IMPORT Modes, ModeSet;
  14. FROM Windows     IMPORT CloseWindow;
  15. FROM ModulaTools IMPORT OpenGraphics, CloseGraphics, CreateScreen, 
  16.                         CreateWindow, InitializeMenuStrip, DestroyMenuStrip,
  17.                         AddMenu, AddItem, AddSubItem, FirstMenu, SelectText,
  18.                         ChoiceType, GotMessage, GetMenuChoice, Checkable, 
  19.                         CheckNow, ItemOn, NoKey, Left;
  20.  
  21. VAR
  22.    UserScreen     : ScreenPtr;
  23.    UserWindow     : WindowPtr;
  24.    CurrentMenu    : MenuPtr;
  25.    CurrentItem    : MenuItemPtr;
  26.    CurrentSubItem : MenuItemPtr;
  27.    IMessage       : IntuiMessagePtr;
  28.    finished       : BOOLEAN;
  29.    WindowTitle    : String;
  30.    ScreenTitle    : String;
  31.  
  32.  
  33. (* In case you didn't know, it's possible to pick more than one (Sub)Item at  *)
  34. (* a time, either by drag selection or click selection. This routine will     *)
  35. (* identify all such choices by checking the NextSelect field in the MenuItem *)
  36. (* structure. The one thing to be wary of is that Intuition doesn't keep track*)
  37. (* of the number of times an Item is chosen. Thus, three clicks on one Item   *)
  38. (* prior to releasing the right menu-button is reported as one click.         *)
  39.  
  40.    PROCEDURE HandleMenus (MenuCode : CARDINAL);
  41.  
  42.    VAR
  43.       MenuChoice : ChoiceType;
  44.  
  45.    BEGIN
  46.       WHILE (MenuCode <> MenuNULL) DO
  47.          GetMenuChoice (MenuCode, FirstMenu, MenuChoice);
  48.          WITH MenuChoice DO
  49.             WriteString ("    Menu #"); WriteInt (MenuChosen,2);
  50.             WriteString ("    Item #"); WriteInt (ItemChosen,2);
  51.             WriteString ("    Sub  #"); WriteInt (SubItemChosen,2);
  52.             WriteLn;
  53.             MenuCode := ChoicePointer^.NextSelect;
  54.          END; (* WITH MenuChoice *)
  55.       END; (* WHILE MenuCode *)
  56.       WriteLn; WriteLn;
  57.    END HandleMenus;
  58.  
  59.  
  60. BEGIN
  61.  
  62.    IF OpenGraphics() THEN
  63.  
  64.       ScreenTitle    := "Simple Screen";
  65.       UserScreen     := CreateScreen (0, 100, 320, 100, 1, ScreenTitle); 
  66.  
  67.       WindowTitle    := "Simple Window";
  68.       UserWindow     := CreateWindow (0, 0, 320, 100, WindowTitle, UserScreen);
  69.  
  70.       IF (UserWindow <> NULL) THEN
  71.  
  72.          InitializeMenuStrip;
  73.  
  74.          AddMenu("Menu #0");
  75.             AddItem("Item #0",  "0",   ItemOn+Checkable+CheckNow, 0);
  76.             AddItem("Item #1",  NoKey, ItemOn, 0);
  77.                AddSubItem("SubItem #0 ", "a", ItemOn+Checkable, 2+4+8);
  78.                AddSubItem("SubItem #1 ", "b", ItemOn+Checkable, 1+4+8);
  79.                AddSubItem("SubItem #2 ", "c", ItemOn+Checkable, 1+2+8);
  80.                AddSubItem("SubItem #3 ", "d", ItemOn+Checkable, 1+2+4);
  81.  
  82.          Left := 100;                                         (* optional *)
  83.          AddMenu("Menu #1");
  84.             AddItem("Item #0", "?", ItemOn, 0);
  85.             AddItem("Item #1", NoKey, ItemOn, 0);
  86.                Left := -50;                                   (* optional *)
  87.                AddSubItem("SubItem #0", "A",  ItemOn+Checkable,          2+4);
  88.                AddSubItem("SubItem #1", "B",  ItemOn+Checkable,          1+4);
  89.                AddSubItem("SubItem #2", "C",  ItemOn+Checkable+CheckNow, 1+2);
  90.  
  91.          SetMenuStrip(UserWindow, FirstMenu^);
  92.  
  93.          finished := FALSE;
  94.          WHILE NOT (finished) DO
  95.             IF (GotMessage (IMessage, UserWindow)) THEN
  96.                IF (MenuPick IN IMessage^.Class) THEN
  97.                   HandleMenus (IMessage^.Code);
  98.                ELSIF (CloseWindowFlag IN IMessage^.Class) THEN
  99.                   finished := TRUE;
  100.                END; (* IF MenuPick *)
  101.             END; (* IF GotMessage *)
  102.          END; (* WHILE NOT finished *)
  103.  
  104.          DestroyMenuStrip(UserWindow);
  105.          CloseWindow (UserWindow);
  106.  
  107.       END; (* IF UserWindow *)
  108.  
  109.       IF (UserScreen <> NULL) THEN
  110.          CloseScreen (UserScreen);
  111.       END; (* IF UserScreen *)
  112.  
  113.       CloseGraphics ();
  114.  
  115.    END; (* IF OpenGraphics *)
  116.    
  117.    DestroyHeap;
  118.      
  119. END Test.
  120.